package com.vivi.gulimall.search;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * es存储数据分析
 * 1. 冗余空间：方便检索。这是空间换时间(推荐)
 * {
 *     skuId:1
 *     spuId:11
 *     skutitle:华为xx
 *     price:998
 *     saleCount:9
 *     attrs:[
 *     		{尺寸：5寸}，
 *     		{cpu: 高通888}，
 *     		{分辨率：全高清}
 *     ]
 * }
 * 冗余
 * 		假设spuId是11的华为手机有8个sku，那么多存储了8个attrs
 * 		100万商品，每个商品有20个属性，有2kb的数据 1000000*2=2000MB=2GB
 * 2.不冗余空间：有问题.这是时间换空间
 * sku索引{
 *     		skuId:1
 *     		spuId:11
 *     		xxx
 * 		}
 * attr索引{
 * 			spuId: 11,
 *     		attrs:[
 *     			{尺寸：5寸}，
 *     			{cpu: 高通888}，
 *     			{分辨率：全高清}
 *     		]
 * 		}
 * 分析
 * 	搜索小米：有粮食、手机、电视
 * 	带有小米的商品有1万个，4千个spu，查询所有spu对应的sku需要分布查询。
 * 	查询时通过esClient，要传递spuId有4000个，假设id时8个字节，4000*8=32000byte=32kb，也就是一次检索需要32kb的数据
 * 	如果有1万人同时检索，32kb*10000=320mb数据。如果百万并发，可能32GB，那么网络阻塞避免不了
 */
@EnableFeignClients(basePackages = "com.vivi.gulimall.search.feign")
@EnableDiscoveryClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class GulimallSearchApplication {

	public static void main(String[] args) {
		SpringApplication.run(GulimallSearchApplication.class, args);
	}

}
